#include "modbus_slave.h"
#include <modbus.h> // 依赖libmodbus库
#include <iostream>

using namespace equip_system;

bool ModbusSlave::initialize(int modbusPort)
{
    port = modbusPort;
    // 初始化libmodbus从站（实际需配置IP、模式等，此处简化）
    isRunning = true;
    std::cout << "Modbus slave initialization completed! port:" << port << std::endl;
    return true;
}

void ModbusSlave::readData(NodeData_Config &data)
{
    if (!isRunning)
        return;

    // 模拟从Modbus主站读取数据（实际需调用libmodbus的API）
    // 示例：随机生成温度和湿度（实际应从硬件读取）
    // data.temperature = 25.0 + (rand() % 100) / 10.0; // 25.0~35.0℃
    // data.humidity = 40.0 + (rand() % 300) / 10.0;    // 40.0~70.0%
    // data.status = 0x0001;                            // 模拟"正常"状态
    // std::cout << "Modbus data update: Temperature=" << data.temperature
    //           << ", Temperature=" << data.humidity << std::endl;
}

void ModbusSlave::stop()
{
    isRunning = false;
    std::cout << "Modbus Slave Stopped" << std::endl;
}
